Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • View renderedDownload


README.md massive-changes (a914d68e) Text, 10.15 KB

Tc9d1d9# Reticulum MeshChatX

Tff7b72> [!IMPORTANT]
Tff7b72> v4 coming soon with release builds for Linux and Windows (Appimage and EXE portable/installer). As well as updated container images and wheel packages. You can test v4 using container by replacing normal image with `git.quad4.io/rns-things/meshchatx-dev:dev`

Contact me for any issues or ideas:

Ta5d6ff```
LXMF: 7cc8d66b4f6a0e0e49d34af7f6077b5a
```

[Tff7b72![CI](Te6edf3https://git.quad4.io/RNS-Things/MeshChatX/actions/workflows/ci.yml/badge.svg?branch=master)](https://git.quad4.io/RNS-Things/MeshChatX/actions/workflows/ci.yml)
[Tff7b72![Tests](Te6edf3https://git.quad4.io/RNS-Things/MeshChatX/actions/workflows/tests.yml/badge.svg?branch=master)](https://git.quad4.io/RNS-Things/MeshChatX/actions/workflows/tests.yml)
[Tff7b72![Build](Te6edf3https://git.quad4.io/RNS-Things/MeshChatX/actions/workflows/build.yml/badge.svg?branch=master)](https://git.quad4.io/RNS-Things/MeshChatX/actions/workflows/build.yml)
[Tff7b72![Docker](Te6edf3https://git.quad4.io/RNS-Things/MeshChatX/actions/workflows/docker.yml/badge.svg?branch=master)](https://git.quad4.io/RNS-Things/MeshChatX/actions/workflows/docker.yml)

A [Tff7b72Reticulum MeshChat](Te6edf3https://github.com/liamcottle/reticulum-meshchat) fork from the future.

<video src="https://strg.0rbitzer0.net/raw/62926a2a-0a9a-4f44-a5f6-000dd60deac1.mp4" controls="controls" style="max-width: 100%;"></video>

This project is separate from the original Reticulum MeshChat project, and is not affiliated with the original project.

Tff7b72> [!WARNING]
Tff7b72> Backup your reticulum-meshchat folder before using! MeshChatX will attempt to auto-migrate whatever it can from the old database without breaking things, but it is best to keep backups.

Tc9d1d9## Goal

To provide everything you need for Reticulum, LXMF, and LXST in one beautiful and feature-rich application.

Tff7b72- Desktop app (Linux, Windows, macOS)
Tff7b72- Self-host on your server easily with or without containers
Tff7b72- Mobile app (one can dream)
Tff7b72- Reliable, secure, fast and easy to use.

Note on macOS: You will need to manually build or use containers since I do not have a macOS machine or runner.

Tc9d1d9## Quick Start (Docker - Recommended)

The easiest way to get MeshChatX running is using Docker. Our official image is multi-arch and supports Ta5d6ff`linux/amd64` and Ta5d6ff`linux/arm64` (Raspberry Pi, etc.).

Ta5d6ff```Ta5d6ffbash
T8b949e# Pull and run the latest image
docker pull git.quad4.io/rns-things/meshchatx:latest

T8b949e# Run MeshChatX in a Docker container
docker run -d Tffea00\
--nameTff7b72=meshchatx Tffea00\
-p T79c0ff8000:8000 Tffea00\
-v Te6edf3$PWD/storage:/app/storage Tffea00\
-v Te6edf3$PWD/public:/app/public Tffea00\
T8b949e# --network=host \ # Uncomment for autointerface support
git.quad4.io/rns-things/meshchatx:latest

T8b949e# Or use Docker Compose for an even easier setup
docker compose up -d
Ta5d6ff```

Check [Tff7b72releases](Te6edf3https://git.quad4.io/RNS-Things/MeshChatX/releases) for pre-built binaries (AppImage, DEB, EXE) if you prefer standalone apps. (coming soon)

Tc9d1d9## Major Features

Tff7b72- **Full LXST Support**: Custom voicemail, phonebook, contact sharing, and ringtone support.
Tff7b72- **Interface Discovery and auto-connecting** - Discover interfaces, auto-connect or connect to trusted ones, map them all!
Tff7b72- **Multi-Identity**: Switch between multiple Reticulum identities seamlessly.
Tff7b72- **Modern UI/UX**: A completely redesigned, intuitive interface.
Tff7b72- **Integrated Maps**: OpenLayers with MBTiles support for offline maps.
Tff7b72- **Security**: Read more about it in the [Tff7b72Security](Te6edf3#security) section.
Tff7b72- **Offline Docs**: Access Reticulum documentation without an internet connection.
Tff7b72- **Expanded Tools**: Includes dozens of more tools.
Tff7b72- **Page Archiving**: Built-in crawler and browser for archived pages offline.
Tff7b72- **Banishment**: Banish LXMF users, Telephony, and NomadNet Nodes.
Tff7b72- **i18n**: Support for English, German, Italian, and Russian.

Tc9d1d9## Screenshots

<details>
<summary>Telephony & Calling</summary>

Tc9d1d9### Phone

![Tff7b72Phone](Te6edf3screenshots/phone.png)

Tc9d1d9### Active Call

![Tff7b72Calling](Te6edf3screenshots/calling.png)

Tc9d1d9### Call Ended

![Tff7b72Call Ended](Te6edf3screenshots/calling-end.png)

Tc9d1d9### Voicemail

![Tff7b72Voicemail](Te6edf3screenshots/voicemail.png)

Tc9d1d9### Ringtone Settings

![Tff7b72Ringtone](Te6edf3screenshots/ringtone.png)

</details>

<details>
<summary>Networking & Visualization</summary>

Tc9d1d9### Network Visualiser

![Tff7b72Network Visualiser](Te6edf3screenshots/network-visualiser.png)
![Tff7b72Network Visualiser 2](Te6edf3screenshots/network-visualiser2.png)

</details>

<details>
<summary>Page Archives</summary>

Tc9d1d9### Archives Browser

![Tff7b72Archives](Te6edf3screenshots/archives.png)

Tc9d1d9### Viewing Archived Page

![Tff7b72Archive View](Te6edf3screenshots/archive-view.png)

</details>

<details>
<summary>Tools & Identities</summary>

Tc9d1d9### Tools

![Tff7b72Tools](Te6edf3screenshots/tools.png)

Tc9d1d9### Identity Management

![Tff7b72Identities](Te6edf3screenshots/identities.png)

</details>

Tc9d1d9### Pipx / Global Installation

If you prefer to install MeshChatX globally using Ta5d6ff`pipx, pip or uv`, you can do so directly from the repository. However, you must specify the path to your built frontend files using the Ta5d6ff`--public-dir` flag or Ta5d6ff`MESHCHAT_PUBLIC_DIR` environment variable, as the static files are not bundled with the source code. The release .whl packages include the built frontend files and also there is a seperate frontend zip to grab and use.

Tff7b721. **Install MeshChatX**:

Ta5d6ff ```Ta5d6ffbash
pipx install git+https://git.quad4.io/RNS-Things/MeshChatX
Ta5d6ff ```

Tff7b722. **Run with Frontend Path**:
Ta5d6ff ```Ta5d6ffbash
T8b949e# Replace /path/to/MeshChatX/meshchatx/public with your actual path
meshchat --public-dir /path/to/MeshChatX/meshchatx/public
Ta5d6ff ```

Tc9d1d9### Manual Installation (From Source)

If you want to run MeshChatX from the source code locally:

Tff7b721. **Clone the repository**:

Ta5d6ff ```Ta5d6ffbash
git clone https://git.quad4.io/RNS-Things/MeshChatX
Tffa657cd MeshChatX
Ta5d6ff ```

Tff7b722. **Build the Frontend**:
Requires Node.js and pnpm.

Ta5d6ff ```Ta5d6ffbash
corepack Tffa657enable
pnpm install
pnpm run build-frontend
Ta5d6ff ```

Tff7b723. **Install & Run Backend**:
Requires Python 3.10+ and Poetry.
Ta5d6ff ```Ta5d6ffbash
pip install poetry
poetry install
poetry run meshchat --headless --host T79c0ff127.0.0.1
Ta5d6ff ```

Tc9d1d9## Configuration

MeshChatX can be configured via command-line arguments or environment variables.

| Argument | Environment Variable | Default | Description |
| :-------------- | :--------------------- | :---------- | :------------------- |
| Ta5d6ff`--host` | Ta5d6ff`MESHCHAT_HOST` | Ta5d6ff`127.0.0.1` | Web server address |
| Ta5d6ff`--port` | Ta5d6ff`MESHCHAT_PORT` | Ta5d6ff`8000` | Web server port |
| Ta5d6ff`--no-https` | Ta5d6ff`MESHCHAT_NO_HTTPS` | Ta5d6ff`false` | Disable HTTPS |
| Ta5d6ff`--headless` | Ta5d6ff`MESHCHAT_HEADLESS` | Ta5d6ff`false` | Don't launch browser |
| Ta5d6ff`--auth` | Ta5d6ff`MESHCHAT_AUTH` | Ta5d6ff`false` | Enable basic auth |
| Ta5d6ff`--storage-dir` | Ta5d6ff`MESHCHAT_STORAGE_DIR` | Ta5d6ff`./storage` | Data directory |
| Ta5d6ff`--public-dir` | Ta5d6ff`MESHCHAT_PUBLIC_DIR` | - | Frontend files path |

Tc9d1d9## Development

We use [Tff7b72Task](Te6edf3https://taskfile.dev/) for automation.

| Task | Description |
| :---------------------------- | :--------------------------------------------- |
| Ta5d6ff`task install` | Install all dependencies |
| Ta5d6ff`task run` | Run the application |
| Ta5d6ff`task dev` | Run the application in development mode |
| Ta5d6ff`task lint` | Run all linters (Python & Frontend) |
| Ta5d6ff`task lint-python` | Lint Python code only |
| Ta5d6ff`task lint-frontend` | Lint frontend code only |
| Ta5d6ff`task format` | Format all code (Python & Frontend) |
| Ta5d6ff`task format-python` | Format Python code only |
| Ta5d6ff`task format-frontend` | Format frontend code only |
| Ta5d6ff`task test` | Run all tests |
| Ta5d6ff`task test:cov` | Run tests with coverage reports |
| Ta5d6ff`task test-python` | Run Python tests only |
| Ta5d6ff`task test-frontend` | Run frontend tests only |
| Ta5d6ff`task build` | Build frontend and backend |
| Ta5d6ff`task build-frontend` | Build only the frontend |
| Ta5d6ff`task wheel` | Build Python wheel package |
| Ta5d6ff`task compile` | Compile Python code to check for syntax errors |
| Ta5d6ff`task build-docker` | Build Docker image using buildx |
| Ta5d6ff`task run-docker` | Run Docker container using docker-compose |
| Ta5d6ff`task build-appimage` | Build Linux AppImage |
| Ta5d6ff`task build-exe` | Build Windows portable executable |
| Ta5d6ff`task build-electron-linux` | Build Linux Electron app |
| Ta5d6ff`task build-electron-windows` | Build Windows Electron apps |
| Ta5d6ff`task android-prepare` | Prepare Android build |
| Ta5d6ff`task android-build` | Build Android APK |
| Ta5d6ff`task build-flatpak` | Build Flatpak package |
| Ta5d6ff`task clean` | Clean build artifacts and dependencies |

Tc9d1d9## Security

Tff7b72- [Tff7b72ASAR Integrity](Te6edf3https://www.electronjs.org/docs/latest/tutorial/asar-integrity) (Stable as of Electron 39)
Tff7b72- Built-in automatic integrity checks on all files (frontend and backend)
Tff7b72- HTTPS by default (automated locally generated certs)
Tff7b72- Redundant CORS protection (loading.html, python backend server, electron main.js)
Tff7b72- Updated dependencies and daily scanning (OSV)
Tff7b72- Container image scanning (Trivy)
Tff7b72- SBOM for dependency observability and tracking
Tff7b72- Extensive testing and fuzzing.
Tff7b72- Rootless docker images
Tff7b72- Pinned actions and container images (supply chain security and deterministic builds)

Tc9d1d9## Credits

Tff7b72- [Tff7b72Liam Cottle](Te6edf3https://github.com/liamcottle) - Original Reticulum MeshChat
Tff7b72- [Tff7b72RFnexus](Te6edf3https://github.com/RFnexus) - [Tff7b72micron-parser-js](Te6edf3https://github.com/RFnexus/micron-parser-js)
Tff7b72- [Tff7b72Marqvist](Te6edf3https://github.com/markqvist) - Reticulum, LXMF, LXST


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────